import Crawler from "crawler";
import fs, { write } from "fs";


// 在爬取图片、PDF文档等二进制文件时，需要对服务器返回的原始数据进行处理，此时需通过指定 encoding 参数为 null 来禁止 Node-Crawler 将其转换为字节流，
// 同时也需要将 jQuery 参数指定为 false 来禁止 DOM 元素提取，只是避免警告 下面是一个抓取图片并保存为本地图片的例子。

const c = new Crawler({
    encoding: null,
    jQuery: false,
    rateLimit: 1000,
    callback: function (err, res, done) {
        if (err) {
            console.error('出现异常', err);
        } else {
            //通过 fs.createWriteStream 创建一个写文件流，写入 res.body（响应体，这里是图片的二进制 Buffer）到文件，文件名从请求参数里取
            fs.createWriteStream(res.options.userParams.filename).write(res.body);
        }

        done();
    }
});

c.add({
    url: 'https://raw.githubusercontent.com/bda-research/node-crawler/master/crawler_primary.png',
    userParams: {
        filename: 'crawler.png'
    }
})